gsk: Add gsk_render_node_write_to_file()
authorBenjamin Otte <otte@redhat.com>
Fri, 23 Dec 2016 04:58:07 +0000 (05:58 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 23 Dec 2016 07:11:01 +0000 (08:11 +0100)
For when you're in a debugger and need to have a closer look at this
node...

docs/reference/gsk/gsk4-sections.txt
gsk/gskrendernode.c
gsk/gskrendernode.h

index eebc74d57d9e93e66d9c765b359aa4c9ea288afb..1a2c5260002807651f4c5f90891036f5af4bb735 100644 (file)
@@ -30,6 +30,9 @@ gsk_render_node_unref
 GskRenderNodeType
 gsk_render_node_get_node_type
 gsk_render_node_draw
+gsk_render_node_serialize
+gsk_render_node_deserialize
+gsk_render_node_write_to_file
 GskScalingFilter
 gsk_render_node_set_scaling_filters
 gsk_render_node_set_name
index d6a14b3b1d2750d2904957c89cda7943c6c3db23..8ce7da7f95348c3f14b92fc953187d103c72321e 100644 (file)
@@ -317,6 +317,42 @@ gsk_render_node_serialize (GskRenderNode *node)
   return result;
 }
 
+/**
+ * gsk_render_node_write_to_file:
+ * @node: a #GskRenderNode
+ * @filename: the file to save it to.
+ * @error: Return location for a potential error
+ *
+ * This function is equivalent to calling gsk_render_node_serialize()
+ * followed by g_file_set_contents(). See those two functions for details
+ * on the arguments.
+ *
+ * It is mostly intended for use inside a debugger to quickly dump a render
+ * node to a file for later inspection.
+ *
+ * Returns: %TRUE if saving was successful
+ **/
+gboolean
+gsk_render_node_write_to_file (GskRenderNode *node,
+                               const char    *filename,
+                               GError       **error)
+{
+  GBytes *bytes;
+  gboolean result;
+
+  g_return_val_if_fail (GSK_IS_RENDER_NODE (node), FALSE);
+  g_return_val_if_fail (filename != NULL, FALSE);
+  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+  bytes = gsk_render_node_serialize (node);
+  result = g_file_set_contents (filename,
+                                g_bytes_get_data (bytes, NULL),
+                                g_bytes_get_size (bytes),
+                                error);
+
+  return result;
+}
+
 GskRenderNode *
 gsk_render_node_deserialize (GBytes *bytes)
 {
index 650ac9bcfb7f5a5d70fa15ce493f255d6a82c6f0..f36cafc29bc871de5029f686a4e52b7ade9921d4 100644 (file)
@@ -177,6 +177,10 @@ void                    gsk_render_node_draw                    (GskRenderNode *
 GDK_AVAILABLE_IN_3_90
 GBytes *                gsk_render_node_serialize               (GskRenderNode *node);
 GDK_AVAILABLE_IN_3_90
+gboolean                gsk_render_node_write_to_file           (GskRenderNode *node,
+                                                                 const char    *filename,
+                                                                 GError       **error);
+GDK_AVAILABLE_IN_3_90
 GskRenderNode *         gsk_render_node_deserialize             (GBytes        *bytes);
 
 G_END_DECLS